<%@page import="java.io.FileWriter"%>
<%@page import="java.io.BufferedWriter"%>
<%@page import="java.io.FileOutputStream"%>
<%@page import="java.io.File"%>
<%@page import="com.manteam.iwant2learn.controller.TrainingController"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>DHTML Tree samples. dhtmlXTree - Checkboxes</title>
</head>
<style>
body {
	font-size: 12px
}

.{
font-family




:arial




;
font-size




:




12
px




}
h1 {
	cursor: hand;
	font-size: 16px;
	margin-left: 10px;
	line-height: 10px
}

xmp {
	color: green;
	font-size: 12px;
	margin: 0px;
	font-family: courier;
	background-color: #e6e6fa;
	padding: 2px
}
</style>
<body>
	<h1>Checkboxes</h1>
	<!-- dhtmlXTree.css -->
	<style rel="STYLESHEET" type="text/css">
.defaultTreeTable {
	margin: 0;
	padding: 0;
	border: 0;
}

.containerTableStyle {
	overflow: auto;
}

.standartTreeRow {
	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
	font-size: 12px;
	-moz-user-select: none;
}

.selectedTreeRow {
	background-color: navy;
	color: white;
	font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
	font-size: 12px;
	-moz-user-select: none;
}

.standartTreeImage {
	width: 18px;
	height: 18px;
	overflow: hidden;
	border: 0;
	padding: 0;
	margin: 0;
}

.hiddenRow {
	width: 1px;
	overflow: hidden;
}

.dragSpanDiv {
	font-size: 12px;
	border: thin solid 1 1 1 1;
}
</style>
	<!-- dhtmlXCommon.js -->
	<script>
		function dtmlXMLLoaderObject(funcObject, dhtmlObject) {
			this.xmlDoc = "";
			this.onloadAction = funcObject || null;
			this.mainObject = dhtmlObject || null;
			return this;
		};

		dtmlXMLLoaderObject.prototype.waitLoadFunction = function(dhtmlObject) {
			//alert("waitLoadFunction");
			this.check = function() {
				if (!dhtmlObject.xmlDoc.readyState)
					dhtmlObject.onloadAction(dhtmlObject.mainObject);
				else {
					if (dhtmlObject.xmlDoc.readyState != 4)
						return false;
					else
						dhtmlObject.onloadAction(dhtmlObject.mainObject);
				}
			};
			return this.check;
		};

		dtmlXMLLoaderObject.prototype.getXMLTopNode = function(tagName) {
			if (this.xmlDoc.responseXML) {
				var temp = this.xmlDoc.responseXML
						.getElementsByTagName(tagName);
				var z = temp[0];
			} else
				var z = this.xmlDoc.documentElement;
			if (z)
				return z;
			alert("Incorrect XML"+z+"tagName"+tagName);
			return document.createElement("DIV");
		};

		 dtmlXMLLoaderObject.prototype.loadXMLString = function(xmlString) {
			try {
				var parser = new DOMParser();
				this.xmlDoc = parser.parseFromString(xmlString, "text/xml");
			} catch (e) {
				this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
				this.xmlDoc.loadXML(xmlString);
			}
			this.onloadAction(this.mainObject);
		} 
		dtmlXMLLoaderObject.prototype.loadXML = function(filePath) {
			try {
				this.xmlDoc = new XMLHttpRequest();
				this.xmlDoc.open("GET", filePath, true);
				this.xmlDoc.onreadystatechange = new this.waitLoadFunction(this);
				this.xmlDoc.send(null);
			} catch (e) {

				if (document.implementation
						&& document.implementation.createDocument) {
					this.xmlDoc = document.implementation.createDocument("",
							"", null);
					this.xmlDoc.onload = new this.waitLoadFunction(this);
				} else {
					this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
					this.xmlDoc.async = "true";
					this.xmlDoc.onreadystatechange = new this.waitLoadFunction(
							this);
				}
				this.xmlDoc.load(filePath);
			}
		};

		function callerFunction(funcObject, dhtmlObject) {
			this.handler = function(e) {
				if (!e)
					e = event;
				funcObject(e, dhtmlObject);
				return true;
			};
			return this.handler;
		};

		function getAbsoluteLeft(htmlObject) {
			var xPos = htmlObject.offsetLeft;
			var temp = htmlObject.offsetParent;
			while (temp != null) {
				xPos += temp.offsetLeft;
				temp = temp.offsetParent;
			}
			return xPos;
		}

		function getAbsoluteTop(htmlObject) {
			var yPos = htmlObject.offsetTop;
			var temp = htmlObject.offsetParent;
			while (temp != null) {
				yPos += temp.offsetTop;
				temp = temp.offsetParent;
			}
			return yPos;
		}

		function convertStringToBoolean(inputString) {
			if (typeof (inputString) == "string")
				inputString = inputString.toLowerCase();
			switch (inputString) {
			case "1":
			case "true":
			case "yes":
			case "y":
			case 1:
			case true:
				return true;
				break;
			default:
				return false;
			}
		}

		function getUrlSymbol(str) {
			if (str.indexOf("?") != -1)
				return "&"
			else
				return "?"
		}

		function dhtmlDragAndDropObject() {
			this.lastLanding = 0;
			this.dragNode = 0;
			this.dragStartNode = 0;
			this.dragStartObject = 0;
			this.tempDOMU = null;
			this.tempDOMM = null;
			this.waitDrag = 0;
			if (window.dhtmlDragAndDrop)
				return window.dhtmlDragAndDrop;
			window.dhtmlDragAndDrop = this;
			return this;
		};

		dhtmlDragAndDropObject.prototype.removeDraggableItem = function(
				htmlNode) {
			htmlNode.onmousedown = null;
			htmlNode.dragStarter = null;
			htmlNode.dragLanding = null;
		}
		dhtmlDragAndDropObject.prototype.addDraggableItem = function(htmlNode,
				dhtmlObject) {
			htmlNode.onmousedown = this.preCreateDragCopy;
			htmlNode.dragStarter = dhtmlObject;
			this.addDragLanding(htmlNode, dhtmlObject);
		}
		dhtmlDragAndDropObject.prototype.addDragLanding = function(htmlNode,
				dhtmlObject) {
			htmlNode.dragLanding = dhtmlObject;
		}
		dhtmlDragAndDropObject.prototype.preCreateDragCopy = function(e) {
			if (window.dhtmlDragAndDrop.waitDrag) {
				window.dhtmlDragAndDrop.waitDrag = 0;
				document.body.onmouseup = window.dhtmlDragAndDrop.tempDOMU;
				document.body.onmousemove = window.dhtmlDragAndDrop.tempDOMM;
				return;
			}

			window.dhtmlDragAndDrop.waitDrag = 1;
			window.dhtmlDragAndDrop.tempDOMU = document.body.onmouseup;
			window.dhtmlDragAndDrop.tempDOMM = document.body.onmousemove;
			window.dhtmlDragAndDrop.dragStartNode = this;
			window.dhtmlDragAndDrop.dragStartObject = this.dragStarter;
			document.body.onmouseup = window.dhtmlDragAndDrop.preCreateDragCopy;
			document.body.onmousemove = window.dhtmlDragAndDrop.callDrag;
		};
		dhtmlDragAndDropObject.prototype.callDrag = function(e) {
			if (!e)
				e = window.event;
			dragger = window.dhtmlDragAndDrop;
			if (!dragger.dragNode) {
				dragger.dragNode = dragger.dragStartObject
						._createDragNode(dragger.dragStartNode);
				document.body.appendChild(dragger.dragNode);
				document.body.onmouseup = dragger.stopDrag;
				dragger.waitDrag = 0;
			}

			dragger.dragNode.style.left = e.clientX + 15
					+ document.body.scrollLeft;
			dragger.dragNode.style.top = e.clientY + 3
					+ document.body.scrollTop;

			if (!e.srcElement)
				var z = e.target;
			else
				z = e.srcElement;
			dragger.checkLanding(z);
		}
		dhtmlDragAndDropObject.prototype.checkLanding = function(htmlObject) {
			if (htmlObject.dragLanding) {
				if (this.lastLanding)
					this.lastLanding.dragLanding._dragOut(this.lastLanding);
				this.lastLanding = htmlObject;
				this.lastLanding = this.lastLanding.dragLanding._dragIn(
						this.lastLanding, this.dragStartNode);
			} else {
				if (htmlObject.tagName != "BODY")
					this.checkLanding(htmlObject.parentNode);
				else {
					if (this.lastLanding)
						this.lastLanding.dragLanding._dragOut(this.lastLanding);
					this.lastLanding = 0;
				}
			}
		}
		dhtmlDragAndDropObject.prototype.stopDrag = function(e) {
			dragger = window.dhtmlDragAndDrop;
			if (dragger.lastLanding)
				dragger.lastLanding.dragLanding._drag(dragger.dragStartNode,
						dragger.dragStartObject, dragger.lastLanding);
			dragger.lastLanding = 0;
			dragger.dragNode.parentNode.removeChild(dragger.dragNode);
			dragger.dragNode = 0;
			dragger.dragStartNode = 0;
			dragger.dragStartObject = 0;
			document.body.onmouseup = dragger.tempDOMU;
			document.body.onmousemove = dragger.tempDOMM;
			dragger.tempDOMU = null;
			dragger.tempDOMM = null;
			dragger.waitDrag = 0;
		}
	</script>
	<!-- dhtmlXTree.js -->
	<script>
		function dhtmlXTreeObject(htmlObject, width, height, rootId) {
			//alert("dhtmlXTreeObject");
			if (typeof (htmlObject) != "object")
				this.parentObject = document.getElementById(htmlObject);
			else
				this.parentObject = htmlObject;
			this.mytype = "tree";
			this.width = width;
			this.height = height;
			this.rootId = rootId;

			this.style_pointer = "pointer";
			if (navigator.appName == 'Microsoft Internet Explorer')
				this.style_pointer = "hand";

			this.hfMode = 0;
			this.nodeCut = 0;
			this.XMLsource = 0;
			this.XMLloadingWarning = 0;
			this._globalIdStorage = new Array();
			this.globalNodeStorage = new Array();
			this._globalIdStorageSize = 0;
			this.treeLinesOn = true;
			this.checkFuncHandler = 0;
			this.openFuncHandler = 0;
			this.dblclickFuncHandler = 0;
			this.tscheck = false;
			this.timgen = true;

			
			this.imPath = "treeGfx/";
			this.checkArray = new Array("iconUnCheckAll.gif",
					"iconCheckAll.gif", "iconCheckGray.gif");
			this.lineArray = new Array("line2.gif", "line3.gif", "line4.gif",
					"blank.gif", "blank.gif");
			this.minusArray = new Array("minus2.gif", "minus3.gif",
					"minus4.gif", "minus.gif", "minus5.gif");
			this.plusArray = new Array("plus2.gif", "plus3.gif", "plus4.gif",
					"plus.gif", "plus5.gif");
			this.imageArray = new Array("leaf.gif", "folderOpen.gif",
					"folderClosed.gif");
			this.cutImg = new Array(0, 0, 0);
			this.cutImage = "but_cut.gif";

			this.dragger = new dhtmlDragAndDropObject();
			this.htmlNode = new dhtmlXTreeItemObject(this.rootId, "", 0, this);
			this.htmlNode.htmlNode.childNodes[0].childNodes[0].style.display = "none";
			this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[0].className = "hiddenRow";
			this.allTree = this._createSelf();
			this.allTree.appendChild(this.htmlNode.htmlNode);
			this.allTree.onselectstart = new Function("return false;");
			this.XMLLoader = new dtmlXMLLoaderObject(this._parseXMLTree, this);

			this.dragger.addDragLanding(this.allTree, this);
			return this;
		};

		function dhtmlXTreeItemObject(itemId, itemText, parentObject,
				treeObject, actionHandler, mode) {
			this.htmlNode = "";
			this.acolor = "";
			this.scolor = "";
			this.tr = 0;
			this.childsCount = 0;
			this.tempDOMM = 0;
			this.tempDOMU = 0;
			this.dragSpan = 0;
			this.dragMove = 0;
			this.span = 0;
			this.closeble = 1;
			this.childNodes = new Array();

			this.checkstate = 0;
			this.treeNod = treeObject;
			this.label = itemText;
			this.parentObject = parentObject;
			this.actionHandler = actionHandler;
			this.images = new Array(treeObject.imageArray[0],
					treeObject.imageArray[1], treeObject.imageArray[2]);

			this.id = treeObject._globalIdStorageAdd(itemId, this);
			if (this.treeNod.checkBoxOff)
				this.htmlNode = this.treeNod._createItem(1, this, mode);
			else
				this.htmlNode = this.treeNod._createItem(0, this, mode);
			this.htmlNode.objBelong = this;
			return this;
		};

		dhtmlXTreeObject.prototype._globalIdStorageAdd = function(itemId,
				itemObject) {
			if (this._globalIdStorageFind(itemId)) {
				d = new Date();
				itemId = d.valueOf() + "_" + itemId;
				return this._globalIdStorageAdd(itemId, itemObject);
			}
			this._globalIdStorage[this._globalIdStorageSize] = itemId;
			this.globalNodeStorage[this._globalIdStorageSize] = itemObject;
			this._globalIdStorageSize++;
			return itemId;
		};

		dhtmlXTreeObject.prototype._globalIdStorageSub = function(itemId) {
			for ( var i = 0; i < this._globalIdStorageSize; i++)
				if (this._globalIdStorage[i] == itemId) {
					this._globalIdStorage[i] = this._globalIdStorage[this._globalIdStorageSize - 1];
					this.globalNodeStorage[i] = this.globalNodeStorage[this._globalIdStorageSize - 1];
					this._globalIdStorageSize--;
					this._globalIdStorage[this._globalIdStorageSize] = 0;
					this.globalNodeStorage[this._globalIdStorageSize] = 0;
				}
		};

		dhtmlXTreeObject.prototype._globalIdStorageFind = function(itemId) {
			for ( var i = 0; i < this._globalIdStorageSize; i++)
				if (this._globalIdStorage[i] == itemId)
					return this.globalNodeStorage[i];
			return 0;
		};

		dhtmlXTreeObject.prototype._drawNewTr = function(htmlObject) {
			var tr = document.createElement('tr');
			var td1 = document.createElement('td');
			var td2 = document.createElement('td');
			td1.appendChild(document.createTextNode(" "));
			td2.colSpan = 3;
			td2.appendChild(htmlObject);
			tr.appendChild(td1);
			tr.appendChild(td2);
			return tr;
		};

		dhtmlXTreeObject.prototype.loadXMLString = function(xmlString) {
			this.XMLLoader.loadXMLString(xmlString);
		};

		dhtmlXTreeObject.prototype.loadXML = function(file) {
			this.XMLLoader.loadXML(file);
		};

		dhtmlXTreeObject.prototype._attachChildNode = function(parentObject,
				itemId, itemText, itemActionHandler, image1, image2, image3,
				optionStr, childs, beforeNode) {
			if (beforeNode)
				parentObject = beforeNode.parentObject;
			if (((parentObject.XMLload == 0) && (this.XMLsource))
					&& (!this.XMLloadingWarning)) {
				parentObject.XMLload = 1;
				this.loadXML(this.XMLsource + getUrlSymbol(this.XMLsource)
						+ "itemId=" + escape(parentObject.itemId));
			}

			var Count = parentObject.childsCount;
			var Nodes = parentObject.childNodes;

			if ((!itemActionHandler) && (this.aFunc))
				itemActionHandler = this.aFunc;
			Nodes[Count] = new dhtmlXTreeItemObject(itemId, itemText,
					parentObject, this, itemActionHandler, 1);

			if (image1)
				Nodes[Count].images[0] = image1;
			if (image2)
				Nodes[Count].images[1] = image2;
			if (image3)
				Nodes[Count].images[2] = image3;

			parentObject.childsCount++;
			var tr = this._drawNewTr(Nodes[Count].htmlNode);
			if (this.XMLloadingWarning)
				Nodes[Count].htmlNode.parentNode.parentNode.style.display = "none";

			if (optionStr) {
				var tempStr = optionStr.split(",");
				for ( var i = 0; i < tempStr.length; i++) {
					switch (tempStr[i]) {
					case "TOP":
						if (parentObject.childsCount > 1)
							beforeNode = parentObject.htmlNode.childNodes[0].childNodes[1].nodem.previousSibling;
						break;
					}
				}
				;
			}
			;

			if ((beforeNode) && (beforeNode.tr.nextSibling))
				parentObject.htmlNode.childNodes[0].insertBefore(tr,
						beforeNode.tr.nextSibling);
			else
				parentObject.htmlNode.childNodes[0].appendChild(tr);

			if (this.XMLsource)
				if ((childs) && (childs != 0))
					Nodes[Count].XMLload = 0;
				else
					Nodes[Count].XMLload = 1;

			Nodes[Count].tr = tr;
			tr.nodem = Nodes[Count];

			if (parentObject.itemId == 0)
				tr.childNodes[0].className = "hitemIddenRow";

			if (optionStr) {
				var tempStr = optionStr.split(",");
				for ( var i = 0; i < tempStr.length; i++) {
					switch (tempStr[i]) {
					case "SELECT":
						this.selectItem(itemId, false);
						break;
					case "CALL":
						this.selectItem(itemId, true);
						break;
					case "CHILD":
						Nodes[Count].XMLload = 0;
						break;
					case "CHECKED":
						if (this.XMLloadingWarning)
							this.setCheckList += itemId;
						else
							this.setCheck(itemId, 1);
						break;
					case "OPEN":
						Nodes[Count].openMe = 1;
						break;
					}
				}
				;
			}
			;

			if (!this.XMLloadingWarning) {
				if (this._getOpenState(parentObject) < 0)
					this.openItem(parentObject.id);

				if (beforeNode) {
					this._correctPlus(beforeNode);
					this._correctLine(beforeNode);
				}
				this._correctPlus(parentObject);
				this._correctLine(parentObject);
				this._correctPlus(Nodes[Count]);
				if (parentObject.childsCount >= 2) {
					this._correctPlus(Nodes[parentObject.childsCount - 2]);
					this._correctLine(Nodes[parentObject.childsCount - 2]);
				}
				if (parentObject.childsCount != 2)
					this._correctPlus(Nodes[0]);
				if (this.tscheck)
					this._correctCheckStates(parentObject);
			}

			return Nodes[Count];
		};

		dhtmlXTreeObject.prototype.insertNewItem = function(parentId, itemId,
				itemText, itemActionHandler, image1, image2, image3, optionStr,
				childs) {
			var parentObject = this._globalIdStorageFind(parentId);
			if (!parentObject)
				return (-1);
			return this._attachChildNode(parentObject, itemId, itemText,
					itemActionHandler, image1, image2, image3, optionStr,
					childs);
		};

		dhtmlXTreeObject.prototype._parseXMLTree = function(dhtmlObject, node,
				parentId, level) {
			//alert("_parseXMLTree");
			dhtmlObject.XMLloadingWarning = 1;
			var nodeAskingCall = "";
			if (!node) {				
				node = dhtmlObject.XMLLoader.getXMLTopNode("tree");
				parentId = node.getAttribute("id");
				dhtmlObject.setCheckList = "";
			}

			for ( var i = 0; i < node.childNodes.length; i++) {
				if ((node.childNodes[i].nodeType == 1)
						&& (node.childNodes[i].tagName == "item")) {
					var name = node.childNodes[i].getAttribute("text");
					var cId = node.childNodes[i].getAttribute("id");

					var im0 = node.childNodes[i].getAttribute("im0");
					var im1 = node.childNodes[i].getAttribute("im1");
					var im2 = node.childNodes[i].getAttribute("im2");

					var aColor = node.childNodes[i].getAttribute("aCol");
					var sColor = node.childNodes[i].getAttribute("sCol");

					var chd = node.childNodes[i].getAttribute("child");

					var atop = node.childNodes[i].getAttribute("top");
					var aopen = node.childNodes[i].getAttribute("open");
					var aselect = node.childNodes[i].getAttribute("select");
					var acall = node.childNodes[i].getAttribute("call");
					var achecked = node.childNodes[i].getAttribute("checked");
					var closeable = node.childNodes[i]
							.getAttribute("closeable");

					var zST = "";
					if (aselect)
						zST += ",SELECT";
					if (atop)
						zST += ",TOP";
					if (acall)
						nodeAskingCall = cId;
					if (achecked)
						zST += ",CHECKED";
					if ((aopen) && (aopen != "0"))
						zST += ",OPEN";

					var temp = dhtmlObject._globalIdStorageFind(parentId);
					temp.XMLload = 1;
					dhtmlObject.insertNewItem(parentId, cId, name, 0, im0, im1,
							im2, zST, chd);
					if (dhtmlObject.parserExtension)
						dhtmlObject.parserExtension._parseExtension(
								node.childNodes[i],
								dhtmlObject.parserExtension, cId, parentId);
					dhtmlObject.setItemColor(cId, aColor, sColor);
					if ((closeable == "0") || (closeable == "1"))
						dhtmlObject.setItemCloseable(cId, closeable);
					var zcall = dhtmlObject._parseXMLTree(dhtmlObject,
							node.childNodes[i], cId, 1);
					if (zcall != "")
						nodeAskingCall = zcall;
				} else if ((node.childNodes[i].nodeType == 1)
						&& (node.childNodes[i].tagName == "userdata")) {
					var name = node.childNodes[i].getAttribute("name");
					if ((name) && (node.childNodes[i].childNodes[0])) {
						dhtmlObject.setUserData(parentId, name,
								node.childNodes[i].childNodes[0].data);
					}
					;
				}
				;
			}
			;

			if (!level) {
				dhtmlObject.lastLoadedXMLId = parentId;
				dhtmlObject._redrawFrom(dhtmlObject);
				dhtmlObject.XMLloadingWarning = 0;
				var chArr = dhtmlObject.setCheckList.split(",");
				for ( var n = 0; n < chArr.length; n++)
					if (chArr[n])
						dhtmlObject.setCheck(chArr[n], 1);
				if (nodeAskingCall != "")
					dhtmlObject.selectItem(nodeAskingCall, true);
			}
			return nodeAskingCall;
		};

		dhtmlXTreeObject.prototype._redrawFrom = function(dhtmlObject,
				itemObject) {
			if (!itemObject) {
				var tempx = dhtmlObject
						._globalIdStorageFind(dhtmlObject.lastLoadedXMLId);
				dhtmlObject.lastLoadedXMLId = -1;
				if (!tempx)
					return 0;
			} else
				tempx = itemObject;
			for ( var i = 0; i < tempx.childsCount; i++) {
				if (!itemObject)
					tempx.childNodes[i].htmlNode.parentNode.parentNode.style.display = "";
				if (tempx.childNodes[i].openMe == 1)
					for ( var zy = 0; zy < tempx.childNodes[i].childNodes.length; zy++)
						tempx.childNodes[i].htmlNode.childNodes[0].childNodes[zy + 1].style.display = "";
				dhtmlObject._redrawFrom(dhtmlObject, tempx.childNodes[i]);
				dhtmlObject._correctLine(tempx.childNodes[i]);
				dhtmlObject._correctPlus(tempx.childNodes[i]);
			}
			;
			dhtmlObject._correctLine(tempx);
			dhtmlObject._correctPlus(tempx);
		};

		dhtmlXTreeObject.prototype._createSelf = function() {
			var div = document.createElement('div');
			div.className = "containerTableStyle";
			div.style.width = this.width;
			div.style.height = this.height;
			this.parentObject.appendChild(div);
			return div;
		};

		dhtmlXTreeObject.prototype._xcloseAll = function(itemObject) {
			if (this.rootId != itemObject.id)
				this._HideShow(itemObject, 1);
			for ( var i = 0; i < itemObject.childsCount; i++)
				this._xcloseAll(itemObject.childNodes[i]);
		};

		dhtmlXTreeObject.prototype._xopenAll = function(itemObject) {
			this._HideShow(itemObject, 2);
			for ( var i = 0; i < itemObject.childsCount; i++)
				this._xopenAll(itemObject.childNodes[i]);
		};

		dhtmlXTreeObject.prototype._correctPlus = function(itemObject) {
			var workArray = this.lineArray;
			if ((this.XMLsource) && (!itemObject.XMLload)) {
				var workArray = this.plusArray;
				itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src = this.imPath
						+ itemObject.images[2];
			} else
				try {
					if (itemObject.childsCount) {
						if (itemObject.htmlNode.childNodes[0].childNodes[1].style.display != "none") {
							var workArray = this.minusArray;
							itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src = this.imPath
									+ itemObject.images[1];
						} else {
							var workArray = this.plusArray;
							itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src = this.imPath
									+ itemObject.images[2];
						}
					} else {
						itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src = this.imPath
								+ itemObject.images[0];
					}
				} catch (e) {
				}
			;

			var tempNum = 2;
			if (!itemObject.treeNod.treeLinesOn)
				itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].src = this.imPath
						+ workArray[3];
			else {
				if (itemObject.parentObject)
					tempNum = this._getCountStatus(itemObject.id,
							itemObject.parentObject);
				itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].src = this.imPath
						+ workArray[tempNum];
			}
		};

		dhtmlXTreeObject.prototype._correctLine = function(itemObject) {
			var sNode = itemObject.parentObject;
			try {
				if (sNode)
					if ((this._getLineStatus(itemObject.id, sNode) == 0)
							|| (!this.treeLinesOn)) {
						for ( var i = 1; i <= itemObject.childsCount; i++) {
							itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage = "";
							itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat = "";
						}
					} else
						for ( var i = 1; i <= itemObject.childsCount; i++) {
							itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage = "url("
									+ this.imPath + "line1.gif)";
							itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat = "repeat-y";
						}
			} catch (e) {
			}
			;
		};

		dhtmlXTreeObject.prototype._getCountStatus = function(itemId,
				itemObject) {
			try {
				if (itemObject.childsCount <= 1) {
					if (itemObject.id == this.rootId)
						return 4;
					else
						return 0;
				}

				if (itemObject.htmlNode.childNodes[0].childNodes[1].nodem.id == itemId)
					if (!itemObject.id)
						return 2;
					else
						return 1;
				if (itemObject.htmlNode.childNodes[0].childNodes[itemObject.childsCount].nodem.id == itemId)
					return 0;
			} catch (e) {
			}
			;
			return 1;
		};

		dhtmlXTreeObject.prototype._getLineStatus = function(itemId, itemObject) {
			if (itemObject.htmlNode.childNodes[0].childNodes[itemObject.childsCount].nodem.id == itemId)
				return 0;
			return 1;
		}

		dhtmlXTreeObject.prototype._HideShow = function(itemObject, mode) {
			if (((this.XMLsource) && (!itemObject.XMLload)) && (!mode)) {
				itemObject.XMLload = 1;
				this.loadXML(this.XMLsource + getUrlSymbol(this.XMLsource)
						+ "id=" + escape(itemObject.id));
				return;
			}
			;
			var Nodes = itemObject.htmlNode.childNodes[0].childNodes;
			var Count = Nodes.length;
			if (Count > 1) {
				if (((Nodes[1].style.display != "none") || (mode == 1))
						&& (mode != 2))
					nodestyle = "none";
				else
					nodestyle = "";
				for ( var i = 1; i < Count; i++)
					Nodes[i].style.display = nodestyle;
			}
			this._correctPlus(itemObject);
		}

		dhtmlXTreeObject.prototype._getOpenState = function(itemObject) {
			var z = itemObject.htmlNode.childNodes[0].childNodes;
			if (z.length <= 1)
				return 0;
			if (z[1].style.display != "none")
				return 1;
			else
				return -1;
		}

		dhtmlXTreeObject.prototype.onRowClick2 = function() {
			if (this.parentObject.treeNod.dblclickFuncHandler)
				if (!this.parentObject.treeNod
						.dblclickFuncHandler(this.parentObject.id))
					return 0;
			if ((this.parentObject.closeble)
					&& (this.parentObject.closeble != "0"))
				this.parentObject.treeNod._HideShow(this.parentObject);
			else
				this.parentObject.treeNod._HideShow(this.parentObject, 2);
		};

		dhtmlXTreeObject.prototype.onRowClick = function() {
			if (this.parentObject.treeNod.openFuncHandler)
				if (!this.parentObject.treeNod.openFuncHandler(
						this.parentObject.id, this.parentObject.treeNod
								._getOpenState(this.parentObject)))
					return 0;
			if ((this.parentObject.closeble)
					&& (this.parentObject.closeble != "0"))
				this.parentObject.treeNod._HideShow(this.parentObject);
			else
				this.parentObject.treeNod._HideShow(this.parentObject, 2);
		};

		dhtmlXTreeObject.prototype.onRowSelect = function(e, htmlObject, mode) {
			if (!htmlObject)
				htmlObject = this;
			htmlObject.childNodes[0].className = "selectedTreeRow";
			if (htmlObject.parentObject.scolor)
				htmlObject.parentObject.span.style.color = htmlObject.parentObject.scolor;
			if ((htmlObject.parentObject.treeNod.lastSelected)
					&& (htmlObject.parentObject.treeNod.lastSelected != htmlObject)) {
				htmlObject.parentObject.treeNod.lastSelected.childNodes[0].className = "standartTreeRow";
				if (htmlObject.parentObject.treeNod.lastSelected.parentObject.acolor)
					htmlObject.parentObject.treeNod.lastSelected.parentObject.span.style.color = htmlObject.parentObject.treeNod.lastSelected.parentObject.acolor;
			}
			htmlObject.parentObject.treeNod.lastSelected = htmlObject;
			if (!mode) {
				if (htmlObject.parentObject.actionHandler)
					htmlObject.parentObject
							.actionHandler(htmlObject.parentObject.id);
			}
		};

		dhtmlXTreeObject.prototype._correctCheckStates = function(dhtmlObject) {
			if (!this.tscheck)
				return;
			if (dhtmlObject.id == this.rootId)
				return;
			var act = dhtmlObject.htmlNode.childNodes[0].childNodes;
			var flag1 = 0;
			var flag2 = 0;
			if (act.length < 2)
				return;
			for ( var i = 1; i < act.length; i++)
				if (act[i].nodem.checkstate == 0)
					flag1 = 1;
				else if (act[i].nodem.checkstate == 1)
					flag2 = 1;
				else {
					flag1 = 1;
					flag2 = 1;
					break;
				}

			if ((flag1) && (flag2))
				this._setCheck(dhtmlObject, "notsure");
			else if (flag1)
				this._setCheck(dhtmlObject, false);
			else
				this._setCheck(dhtmlObject, true);

			this._correctCheckStates(dhtmlObject.parentObject);
		}

		dhtmlXTreeObject.prototype.onCheckBoxClick = function(e) {
			if (this.treeNod.tscheck)
				if (this.parentObject.checkstate == 1)
					this.treeNod._setSubChecked(false, this.parentObject);
				else
					this.treeNod._setSubChecked(true, this.parentObject);
			else if (this.parentObject.checkstate == 1)
				this.treeNod._setCheck(this.parentObject, false);
			else
				this.treeNod._setCheck(this.parentObject, true);
			this.treeNod._correctCheckStates(this.parentObject.parentObject);
			if (this.treeNod.checkFuncHandler)
				return (this.treeNod.checkFuncHandler(this.parentObject.id,
						this.parentObject.checkstate));
			else
				return true;
		};

		dhtmlXTreeObject.prototype._createItem = function(acheck, itemObject,
				mode) {
			var table = document.createElement('table');
			table.cellSpacing = 0;
			table.cellPadding = 0;
			table.border = 0;
			if (this.hfMode)
				table.style.tableLayout = "fixed";
			table.style.margin = 0;
			table.style.padding = 0;

			var tbody = document.createElement('tbody');
			var tr = document.createElement('tr');
			var td1 = document.createElement('td');
			td1.className = "standartTreeImage";
			var img0 = document.createElement("img");
			img0.border = "0";
			td1.appendChild(img0);
			img0.style.padding = 0;

			var td11 = document.createElement('td');
			var inp = document.createElement("img");
			inp.checked = 0;
			inp.src = this.imPath + this.checkArray[0];
			inp.style.width = "16px";
			inp.style.height = "16px";

			if (!acheck)
				inp.style.display = "none";
			td11.appendChild(inp);
			td11.width = "16px";
			inp.onclick = this.onCheckBoxClick;
			inp.treeNod = this;
			inp.parentObject = itemObject;

			var td12 = document.createElement('td');
			td12.className = "standartTreeImage";
			var img = document.createElement("img");
			img.onmousedown = this._preventNsDrag;
			img.border = "0";
			if (!mode)
				img.src = this.imPath + this.imageArray[0];
			td12.appendChild(img);
			img.style.padding = 0;
			img.style.margin = 0;
			if (this.timgen) {
				img.style.width = "18px";
				img.style.height = "18px";
			} else {
				img.style.width = "0px";
				img.style.height = "0px";
			}

			var td2 = document.createElement('td');
			td2.noWrap = true;
			itemObject.span = document.createElement('span');
			itemObject.span.className = "standartTreeRow";
			td2.style.width = "100%";
			itemObject.span.appendChild(document
					.createTextNode(itemObject.label));
			td2.appendChild(itemObject.span);
			td2.parentObject = itemObject;
			td1.parentObject = itemObject;
			td2.onclick = this.onRowSelect;
			td1.onclick = this.onRowClick;
			td2.ondblclick = this.onRowClick2;

			if (this.dragAndDropOff)
				this.dragger.addDraggableItem(td2, this);

			td2.style.verticalAlign = "";
			td2.style.cursor = this.style_pointer;
			tr.appendChild(td1);
			tr.appendChild(td11);
			tr.appendChild(td12);
			tr.appendChild(td2);
			tbody.appendChild(tr);
			table.appendChild(tbody);
			return table;
		};

		dhtmlXTreeObject.prototype.setImagePath = function(newPath) {
			this.imPath = newPath;
		};

		dhtmlXTreeObject.prototype.setOnClickHandler = function(func) {
			if (typeof (func) == "function")
				this.aFunc = func;
			else
				this.aFunc = eval(func);
		};

		dhtmlXTreeObject.prototype.setXMLAutoLoading = function(filePath) {
			this.XMLsource = filePath;
		};

		dhtmlXTreeObject.prototype.setOnCheckHandler = function(func) {
			if (typeof (func) == "function")
				this.checkFuncHandler = func;
			else
				this.checkFuncHandler = eval(func);
		};

		dhtmlXTreeObject.prototype.setOnOpenHandler = function(func) {
			if (typeof (func) == "function")
				this.openFuncHandler = func;
			else
				this.openFuncHandler = eval(func);
		};

		dhtmlXTreeObject.prototype.setOnDblClickHandler = function(func) {
			if (typeof (func) == "function")
				this.dblclickFuncHandler = func;
			else
				this.dblclickFuncHandler = eval(func);
		};

		dhtmlXTreeObject.prototype.openAllItems = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			this._xopenAll(temp);
		};

		dhtmlXTreeObject.prototype.getOpenState = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return "";
			return this._getOpenState(temp);
		};

		dhtmlXTreeObject.prototype.closeAllItems = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			this._xcloseAll(temp);
		};

		dhtmlXTreeObject.prototype.setUserData = function(itemId, name, value) {
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return;
			if (name == "hint")
				sNode.htmlNode.childNodes[0].childNodes[0].title = value;
			sNode[name] = value;
		};

		dhtmlXTreeObject.prototype.getUserData = function(itemId, name) {
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return;
			return eval("sNode." + name);
		};

		dhtmlXTreeObject.prototype.getSelectedItemId = function() {
			if (this.lastSelected)
				if (this
						._globalIdStorageFind(this.lastSelected.parentObject.id))
					return this.lastSelected.parentObject.id;
			return ("");
		};

		dhtmlXTreeObject.prototype.getItemColor = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;

			var res = new Object();
			if (temp.acolor)
				res.acolor = temp.acolor;
			if (temp.acolor)
				res.scolor = temp.scolor;
			return res;
		};

		dhtmlXTreeObject.prototype.setItemColor = function(itemId,
				defaultColor, selectedColor) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			else {
				if ((this.lastSelected)
						&& (temp.tr == this.lastSelected.parentObject.tr)) {
					if (selectedColor)
						temp.span.style.color = selectedColor;
				} else {
					if (defaultColor)
						temp.span.style.color = defaultColor;
				}

				if (selectedColor)
					temp.scolor = selectedColor;
				if (defaultColor)
					temp.acolor = defaultColor;
			}
		};

		dhtmlXTreeObject.prototype.getItemText = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			return (temp.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML);
		};

		dhtmlXTreeObject.prototype.getParentId = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if ((!temp) || (!temp.parentObject))
				return "";
			return temp.parentObject.id;
		};

		dhtmlXTreeObject.prototype.changeItemId = function(itemId, newItemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			temp.id = newItemId;
			for ( var i = 0; i < this._globalIdStorageSize; i++)
				if (this._globalIdStorage[i] == itemId) {
					this._globalIdStorage[i] = newItemId;
				}
		};

		dhtmlXTreeObject.prototype.doCut = function() {
			if (this.nodeCut)
				this.clearCut();
			this.nodeCut = this.lastSelected;
			if (this.nodeCut) {
				var tempa = this.nodeCut.parentObject;
				this.cutImg[0] = tempa.images[0];
				this.cutImg[1] = tempa.images[1];
				this.cutImg[2] = tempa.images[2];
				tempa.images[0] = tempa.images[1] = tempa.images[2] = this.cutImage;
				this._correctPlus(tempa);
			}
		};

		dhtmlXTreeObject.prototype.doPaste = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			if (this.nodeCut) {
				if ((!this._checkParenNodes(this.nodeCut.parentObject.id, temp))
						&& (id != this.nodeCut.parentObject.parentObject.id))
					this._moveNode(temp, this.nodeCut.parentObject);
				this.clearCut();
			}
		};

		dhtmlXTreeObject.prototype.clearCut = function() {
			if (this.nodeCut) {
				var tempa = this.nodeCut.parentObject;
				tempa.images[0] = this.cutImg[0];
				tempa.images[1] = this.cutImg[1];
				tempa.images[2] = this.cutImg[2];
				if (tempa.parentObject)
					this._correctPlus(tempa);
				if (tempa.parentObject)
					this._correctLine(tempa);
				this.nodeCut = 0;
			}
		};

		dhtmlXTreeObject.prototype._moveNode = function(itemObject,
				targetObject) {
			if (this.dragFunc)
				if (!this.dragFunc(itemObject.id, targetObject.id))
					return false;
			if ((targetObject.XMLload == 0) && (this.XMLsource)) {
				targetObject.XMLload = 1;
				this.loadXML(this.XMLsource + getUrlSymbol(this.XMLsource)
						+ "id=" + escape(targetObject.id));
			}
			this.openItem(targetObject.id);
			var oldTree = itemObject.treeNod;
			var c = itemObject.parentObject.childsCount;
			var z = itemObject.parentObject;
			var Count = targetObject.childsCount;
			var Nodes = targetObject.childNodes;
			Nodes[Count] = itemObject;
			itemObject.treeNod = targetObject.treeNod;
			targetObject.childsCount++;

			var tr = this._drawNewTr(Nodes[Count].htmlNode);
			targetObject.htmlNode.childNodes[0].appendChild(tr);

			itemObject.parentObject.htmlNode.childNodes[0]
					.removeChild(itemObject.tr);

			for ( var i = 0; i < z.childsCount; i++)
				if (z.childNodes[i].id == itemObject.id) {
					z.childNodes[i] = 0;
					break;
				}
			oldTree._compressChildList(z.childsCount, z.childNodes);
			z.childsCount--;
			itemObject.tr = tr;
			tr.nodem = itemObject;

			itemObject.parentObject = targetObject;
			if (oldTree != targetObject.treeNod) {
				if (itemObject.treeNod._registerBranch(itemObject, oldTree))
					return;
				this._clearStyles(itemObject);
			}
			;

			if (c > 1) {
				oldTree._correctPlus(z.childNodes[c - 2]);
				oldTree._correctLine(z.childNodes[c - 2]);
			}
			this._correctPlus(targetObject);
			this._correctLine(targetObject);
			oldTree._correctPlus(z);
			this._correctLine(itemObject);
			this._correctPlus(Nodes[Count]);
			if (targetObject.childsCount >= 2) {
				this._correctPlus(Nodes[targetObject.childsCount - 2]);
				this._correctLine(Nodes[targetObject.childsCount - 2]);
			}
			if (this.tscheck)
				this._correctCheckStates(targetObject);
			if (oldTree.tscheck)
				oldTree._correctCheckStates(z);
			return true;
		};

		dhtmlXTreeObject.prototype._checkParenNodes = function(itemId,
				htmlObject, shtmlObject) {
			if (shtmlObject) {
				if (shtmlObject.parentObject.id == htmlObject.id)
					return 1;
			}
			if (htmlObject.id == itemId)
				return 1;
			if (htmlObject.parentObject)
				return this._checkParenNodes(itemId, htmlObject.parentObject);
			else
				return 0;
		};

		dhtmlXTreeObject.prototype._clearStyles = function(itemObject) {
			var td1 = itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[1];
			var td3 = td1.nextSibling.nextSibling;

			if (this.checkBoxOff) {
				td1.childNodes[0].style.display = "";
				td1.childNodes[0].onclick = this.onCheckBoxClick;
			} else
				td1.childNodes[0].style.display = "none";
			td1.childNodes[0].treeNod = this;

			this.dragger.removeDraggableItem(td3);
			if (this.dragAndDropOff)
				this.dragger.addDraggableItem(td3, this);
			td3.childNodes[0].className = "standartTreeRow";
			td3.onclick = this.onRowSelect;
			td3.ondblclick = this.onRowClick2;
			td1.previousSibling.onclick = this.onRowClick;

			this._correctLine(itemObject);
			this._correctPlus(itemObject);
			for ( var i = 0; i < itemObject.childsCount; i++)
				this._clearStyles(itemObject.childNodes[i]);
		};

		dhtmlXTreeObject.prototype._registerBranch = function(itemObject,
				oldTree) {

			itemObject.id = this._globalIdStorageAdd(itemObject.id, itemObject);
			itemObject.treeNod = this;
			if (oldTree)
				oldTree._globalIdStorageSub(itemObject.id);
			for ( var i = 0; i < itemObject.childsCount; i++)
				this._registerBranch(itemObject.childNodes[i], oldTree);
			return 0;
		};

		dhtmlXTreeObject.prototype.enableThreeStateCheckboxes = function(mode) {
			this.tscheck = convertStringToBoolean(mode);
		};

		dhtmlXTreeObject.prototype.enableTreeImages = function(mode) {
			this.timgen = convertStringToBoolean(mode);
		};

		dhtmlXTreeObject.prototype.enableFixedMode = function(mode) {
			this.hfMode = convertStringToBoolean(mode);
		};

		dhtmlXTreeObject.prototype.enableCheckBoxes = function(mode) {
			this.checkBoxOff = convertStringToBoolean(mode);
		};

		dhtmlXTreeObject.prototype.setStdImages = function(image1, image2,
				image3) {
			this.imageArray[0] = image1;
			this.imageArray[1] = image2;
			this.imageArray[2] = image3;
		};

		dhtmlXTreeObject.prototype.enableTreeLines = function(mode) {
			this.treeLinesOn = convertStringToBoolean(mode);
		}

		dhtmlXTreeObject.prototype.setImageArrays = function(arrayName, image1,
				image2, image3, image4, image5) {
			switch (arrayName) {
			case "plus":
				this.plusArray[0] = image1;
				this.plusArray[1] = image2;
				this.plusArray[2] = image3;
				this.plusArray[3] = image4;
				this.plusArray[4] = image5;
				break;
			case "minus":
				this.minusArray[0] = image1;
				this.minusArray[1] = image2;
				this.minusArray[2] = image3;
				this.minusArray[3] = image4;
				this.minusArray[4] = image5;
				break;
			}
		};

		dhtmlXTreeObject.prototype.openItem = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			this._HideShow(temp, 2);
			if ((temp.parentObject)
					&& (this._getOpenState(temp.parentObject) < 0))
				this.openItem(temp.parentObject.id);
		};

		dhtmlXTreeObject.prototype.closeItem = function(itemId) {
			if (this.rootId == itemId)
				return 0;
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			if (temp.closeble)
				this._HideShow(temp, 1);
		};

		dhtmlXTreeObject.prototype.getLevel = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			return this._getNodeLevel(temp, 0);
		};

		dhtmlXTreeObject.prototype.setItemCloseable = function(itemId, flag) {
			flag = convertStringToBoolean(flag);
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			temp.closeble = flag;
		};

		dhtmlXTreeObject.prototype._getNodeLevel = function(itemObject, count) {
			if (itemObject.parentObject)
				return this._getNodeLevel(itemObject.parentObject, count + 1);
			return (count);
		};

		dhtmlXTreeObject.prototype.hasChildren = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			else {
				if ((this.XMLsource) && (!temp.XMLload))
					return true;
				else
					return temp.childsCount;
			}
			;
		};

		dhtmlXTreeObject.prototype.setItemText = function(itemId, newLabel) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			temp.label = newLabel;
			temp.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML = newLabel;
		};

		dhtmlXTreeObject.prototype.refreshItem = function(itemId) {
			if (!itemId)
				itemId = this.rootId;
			var temp = this._globalIdStorageFind(itemId);
			this.deleteChildItems(itemId);
			this.loadXML(this.XMLsource + getUrlSymbol(this.XMLsource) + "id="
					+ escape(itemId));
		};

		dhtmlXTreeObject.prototype.setItemImage2 = function(itemId, image1,
				image2, image3) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			temp.images[1] = image2;
			temp.images[2] = image3;
			temp.images[0] = image1;
			this._correctPlus(temp);
		};

		dhtmlXTreeObject.prototype.setItemImage = function(itemId, image1,
				image2) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			if (image2) {
				temp.images[1] = image1;
				temp.images[2] = image2;
			} else
				temp.images[0] = image1;
			this._correctPlus(temp);
		};

		dhtmlXTreeObject.prototype.getSubItems = function(itemId) {
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;

			var z = "";
			for (i = 0; i < temp.childsCount; i++)
				if (!z)
					z = temp.childNodes[i].id;
				else
					z += "," + temp.childNodes[i].id;
			return z;
		};

		dhtmlXTreeObject.prototype.getAllSubItems = function(itemId) {
			return this._getAllSubItems(itemId);
		}

		dhtmlXTreeObject.prototype._getAllSubItems = function(itemId, z, node) {
			if (node)
				temp = node;
			else {
				var temp = this._globalIdStorageFind(itemId);
			}
			;
			if (!temp)
				return 0;

			z = "";
			for ( var i = 0; i < temp.childsCount; i++) {
				if (!z)
					z = temp.childNodes[i].id;
				else
					z += "," + temp.childNodes[i].id;
				var zb = this._getAllSubItems(0, z, temp.childNodes[i])
				if (zb)
					z += "," + zb;
			}
			return z;
		};

		dhtmlXTreeObject.prototype.selectItem = function(itemId, mode) {
			mode = convertStringToBoolean(mode);
			var temp = this._globalIdStorageFind(itemId);
			if (!temp)
				return 0;
			if (this._getOpenState(temp.parentObject) == -1)
				this.openItem(itemId);
			if (mode)
				this
						.onRowSelect(
								0,
								temp.htmlNode.childNodes[0].childNodes[0].childNodes[3],
								false);
			else
				this
						.onRowSelect(
								0,
								temp.htmlNode.childNodes[0].childNodes[0].childNodes[3],
								true);
		};

		dhtmlXTreeObject.prototype.getSelectedItemText = function() {
			if (this.lastSelected)
				return this.lastSelected.parentObject.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML;
			else
				return ("");
		};

		dhtmlXTreeObject.prototype._compressChildList = function(Count, Nodes) {
			Count--;
			for ( var i = 0; i < Count; i++) {
				if (Nodes[i] == 0) {
					Nodes[i] = Nodes[i + 1];
					Nodes[i + 1] = 0;
				}
			}
			;
		};

		dhtmlXTreeObject.prototype._deleteNode = function(itemId, htmlObject,
				skip) {

			if (!skip) {
				this._globalIdStorageRecSub(htmlObject);
			}

			if ((!htmlObject) || (!htmlObject.parentObject))
				return 0;
			var tempos = 0;
			var tempos2 = 0;
			if (htmlObject.tr.nextSibling)
				tempos = htmlObject.tr.nextSibling.nodem;
			if (htmlObject.tr.previousSibling)
				tempos2 = htmlObject.tr.previousSibling.nodem;

			var sN = htmlObject.parentObject;
			var Count = sN.childsCount;
			var Nodes = sN.childNodes;
			for ( var i = 0; i < Count; i++) {
				if (Nodes[i].id == itemId) {
					if (!skip)
						sN.htmlNode.childNodes[0].removeChild(Nodes[i].tr);
					Nodes[i] = 0;
					break;
				}
			}
			this._compressChildList(Count, Nodes);
			if (!skip) {
				sN.childsCount--;
			}

			if (tempos) {
				this._correctPlus(tempos);
				this._correctLine(tempos);
			}
			if (tempos2) {
				this._correctPlus(tempos2);
				this._correctLine(tempos2);
			}
			if (this.tscheck)
				this._correctCheckStates(sN);
		};

		dhtmlXTreeObject.prototype.setCheck = function(itemId, state) {
			state = convertStringToBoolean(state);
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return;
			if (!this.tscheck)
				return this._setSubChecked(state, sNode);
			else
				this._setCheck(sNode, state);
			this._correctCheckStates(sNode.parentObject);
		};

		dhtmlXTreeObject.prototype._setCheck = function(sNode, state) {
			var z = sNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];
			if (state == "notsure")
				sNode.checkstate = 2;
			else if (state)
				sNode.checkstate = 1;
			else
				sNode.checkstate = 0;

			z.src = this.imPath + this.checkArray[sNode.checkstate];
		};

		dhtmlXTreeObject.prototype.setSubChecked = function(itemId, state) {
			var sNode = this._globalIdStorageFind(itemId);
			this._setSubChecked(state, sNode);
			this._correctCheckStates(sNode.parentObject);
		}

		dhtmlXTreeObject.prototype._setSubChecked = function(state, sNode) {
			state = convertStringToBoolean(state);
			if (!sNode)
				return;
			for ( var i = 0; i < sNode.childsCount; i++) {
				this._setSubChecked(state, sNode.childNodes[i]);
			}
			;
			var z = sNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];
			if (state)
				sNode.checkstate = 1;
			else
				sNode.checkstate = 0;
			z.src = this.imPath + this.checkArray[sNode.checkstate];
		};

		dhtmlXTreeObject.prototype.isItemChecked = function(itemId) {
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return;
			return sNode.checkstate;
		};

		dhtmlXTreeObject.prototype.getAllChecked = function() {
			return this._getAllChecked("", "", 1);
		}

		dhtmlXTreeObject.prototype.getAllCheckedBranches = function() {
			return this._getAllChecked("", "", 0);
		}

		dhtmlXTreeObject.prototype._getAllChecked = function(htmlNode, list,
				mode) {
			if (!htmlNode)
				htmlNode = this.htmlNode;
			if (((mode) && (htmlNode.checkstate == 1))
					|| ((!mode) && (htmlNode.checkstate > 0))) {
				if (list)
					list += "," + htmlNode.id;
				else
					list = htmlNode.id;
			}
			var j = htmlNode.childsCount;
			for ( var i = 0; i < j; i++) {
				list = this._getAllChecked(htmlNode.childNodes[i], list, mode);
			}
			;
			if (list)
				return list;
			else
				return "";
		};

		dhtmlXTreeObject.prototype.deleteChildItems = function(itemId) {
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return;
			var j = sNode.childsCount;
			for ( var i = 0; i < j; i++) {
				this._deleteNode(sNode.childNodes[0].id, sNode.childNodes[0]);
			}
			;
		};

		dhtmlXTreeObject.prototype.deleteItem = function(itemId, selectParent) {
			this._deleteItem(itemId, selectParent);
		}

		dhtmlXTreeObject.prototype._deleteItem = function(itemId, selectParent,
				skip) {
			selectParent = convertStringToBoolean(selectParent);
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return;
			if (selectParent)
				this.selectItem(this.getParentId(this.getSelectedItemId()), 1);
			if (!skip) {
				this._globalIdStorageRecSub(sNode);
			}
			;
			var zTemp = sNode.parentObject;
			this._deleteNode(itemId, sNode, skip);
			this._correctPlus(zTemp);
			this._correctLine(zTemp);
		};

		dhtmlXTreeObject.prototype._globalIdStorageRecSub = function(itemObject) {
			for ( var i = 0; i < itemObject.childsCount; i++) {
				this._globalIdStorageRecSub(itemObject.childNodes[i]);
				this._globalIdStorageSub(itemObject.childNodes[i].id);
			}
			;
			this._globalIdStorageSub(itemObject.id);
		};

		dhtmlXTreeObject.prototype.insertNewNext = function(parentItemId,
				itemId, itemName, itemActionHandler, image1, image2, image3,
				optionStr, childs) {
			var sNode = this._globalIdStorageFind(parentItemId);
			if (!sNode)
				return (0);
			this._attachChildNode(0, itemId, itemName, itemActionHandler,
					image1, image2, image3, optionStr, childs, sNode);
		};

		dhtmlXTreeObject.prototype.getItemIdByIndex = function(itemId, index) {
			var z = this._globalIdStorageFind(itemId);
			if (!z)
				return 0;
			var temp = z.htmlNode.childNodes[0].childNodes[0];
			while (index > 0) {
				temp = temp.nextSibling;
				if ((!temp) || (!temp.nodem))
					return 0;
				index--;
			}
			return temp.nodem.id;
		};

		dhtmlXTreeObject.prototype.getChildItemIdByIndex = function(itemId,
				index) {
			var sNode = this._globalIdStorageFind(itemId);
			if (!sNode)
				return (0);
			if (this.hasChildren(itemId) < index)
				return 0;
			return sNode.htmlNode.childNodes[0].childNodes[index].nodem.id;
		};

		dhtmlXTreeObject.prototype.setDragHandler = function(func) {
			if (typeof (func) == "function")
				this.dragFunc = func;
			else
				this.dragFunc = eval(func);
		};

		dhtmlXTreeObject.prototype._clearMove = function(htmlNode) {
			if (htmlNode.parentObject.span) {
				htmlNode.parentObject.span.className = 'standartTreeRow';
				if (htmlNode.parentObject.acolor)
					htmlNode.parentObject.span.style.color = htmlNode.parentObject.acolor;
			}
		};

		dhtmlXTreeObject.prototype.enableDragAndDrop = function(mode) {
			this.dragAndDropOff = convertStringToBoolean(mode);
		};

		dhtmlXTreeObject.prototype._setMove = function(htmlNode) {
			if (htmlNode.parentObject.span) {
				htmlNode.parentObject.span.className = 'selectedTreeRow';
				if (htmlNode.parentObject.scolor)
					htmlNode.parentObject.span.style.color = htmlNode.parentObject.scolor;
			}
		};

		dhtmlXTreeObject.prototype._createDragNode = function(htmlObject) {
			dhtmlObject = htmlObject.parentObject;
			if (this.lastSelected)
				this._clearMove(this.lastSelected);
			var dragSpan = document.createElement('div');
			dragSpan.appendChild(document.createTextNode(dhtmlObject.label));
			dragSpan.style.position = "absolute";
			dragSpan.className = "dragSpanDiv";
			return dragSpan;
		}

		dhtmlXTreeObject.prototype._preventNsDrag = function(e) {
			if ((e) && (e.preventDefault)) {
				e.preventDefault();
				return false;
			}
		}

		dhtmlXTreeObject.prototype._drag = function(sourceHtmlObject,
				dhtmlObject, targetHtmlObject) {
			if (!targetHtmlObject.parentObject) {
				targetHtmlObject = this.htmlNode.htmlNode.childNodes[0].childNodes[0].childNodes[1].childNodes[0];
			} else
				this._clearMove(targetHtmlObject);
			if (dhtmlObject.lastSelected)
				dhtmlObject._setMove(dhtmlObject.lastSelected);
			if ((!this.dragMove) || (this.dragMove()))
				this._moveNode(sourceHtmlObject.parentObject,
						targetHtmlObject.parentObject);

		}

		dhtmlXTreeObject.prototype._dragIn = function(htmlObject, shtmlObject) {
			if (!htmlObject.parentObject) {

				return htmlObject;
			}
			if ((!this._checkParenNodes(shtmlObject.parentObject.id,
					htmlObject.parentObject, shtmlObject.parentObject))
					&& (htmlObject.parentObject.id != shtmlObject.parentObject.id)) {
				this._setMove(htmlObject);
				if (this._getOpenState(htmlObject.parentObject) < 0)
					this._autoOpenTimer = window.setTimeout(new callerFunction(
							this._autoOpenItem, this), 1000);
				this._autoOpenId = htmlObject.parentObject.id;
				return htmlObject;
			} else
				return 0;
		}
		dhtmlXTreeObject.prototype._autoOpenItem = function(e, treeObject) {
			treeObject.openItem(treeObject._autoOpenId);
		};
		dhtmlXTreeObject.prototype._dragOut = function(htmlObject) {
			if (!htmlObject.parentObject)
				return 0;
			this._clearMove(htmlObject);
			if (this._autoOpenTimer)
				clearTimeout(this._autoOpenTimer);
		}
	</script>

	<table>
		<tr>
			<td valign="top">
				<div id="treeboxbox_tree"
					style="width: 150; height: 218; background-color: #f5f5f5; border: 1px solid Silver;; overflow: auto;"></div>
			</td>
			<td style="padding-left: 25" valign="top">Two state checkboxes <a
				href="javascript:void(0);"
				onclick="tree.setCheck(tree.getSelectedItemId(),true);">Check
					item</a><br> <br> <a href="javascript:void(0);"
				onclick="tree.setCheck(tree.getSelectedItemId(),false);">UnCheck
					item</a><br> <br> <a href="javascript:void(0);"
				onclick="tree.setSubChecked(tree.getSelectedItemId(),true);">Check
					branch</a><br> <br> <a href="javascript:void(0);"
				onclick="tree.setSubChecked(tree.getSelectedItemId(),false);">UnCheck
					branch</a><br> <br> <a href="javascript:void(0);"
				onclick="alert(tree.getAllChecked());">Get list of checked</a><br>
				<br></td>
		</tr>
	</table>
	<hr>

	<script>
		 tree = new dhtmlXTreeObject("treeboxbox_tree", "100%", "100%", 0);
		tree.setImagePath("treeImgs/");
		tree.enableCheckBoxes(1);
		</script>
	<%
		TrainingController training = new TrainingController();
		String ret = training.retrieveXMLStreamForSubject("Physics", null);
	%>
	<script type="text/javascript">
	tree.loadXMLString('<%=ret%>');
	</script>
	<br>
	<br>

</body>
</html>